#include "editormode.h"
#include "main.h"
#include "usb_device.h"
#include "usbd_cdc.h"
#include "usbd_cdc.h"
#include "usbd_cdc_if.h"
#include "usbd_hid.h"
#include "usbd_core.h"
#include "usbd_cdc_if.h"

extern USBD_HandleTypeDef hUsbDeviceFS;

void VPC_Start(void);
void USB_ModeSwitch(uint8_t mode);
void CDC_Mode_Switch(void);
/*对USB进行重新枚举即可，使用方法为将USB DP（PA12）引脚拉低一段时间后即可*/
void VPC_Start(void)
{
	GPIO_InitTypeDef GPIO_InitStruct = {0};
	__HAL_RCC_GPIOA_CLK_ENABLE();
	GPIO_InitStruct.Pin = GPIO_PIN_12;
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
	HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_RESET);
	HAL_Delay(100);
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_SET);
}

void USB_ModeSwitch(uint8_t mode)
{
	USBD_DeInit(&hUsbDeviceFS);
	/*HID=1,CDC=0*/
	if(mode)
	{
		MX_USB_DEVICE_HID_Init();
	}
	else
	{
		//VPC_Start();
		MX_USB_DEVICE_CDC_Init();
	}
}
void CDC_Mode_Switch(void)
{
//	VPC_Start();
	MX_USB_DEVICE_CDC_Init();
}
